package com.loveprogrammer;

import com.loveprogrammer.base.bean.ServerConfig;
import com.loveprogrammer.constants.ConstantValue;
import com.loveprogrammer.netty.start.BasicServer;
import com.loveprogrammer.netty.start.IServer;
import com.sun.deploy.net.protocol.ProtocolType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Hello world!
 *
 */
@SpringBootApplication
public class EternityServerMain
{
    // 为了保证使用时，不需要每次都去创建logger 对象，我们声明静态常量
    public static final Logger LOGGER = LoggerFactory.getLogger(EternityServerMain.class);

    public static void main( String[] args )
    {
        LOGGER.info( "Hello World!" );
        // 最基本的启动方法
//        try {
//            LOGGER.info("开始启动Socket服务器...");
//            new SocketServer().run();
//        } catch (Exception e) {
//            LOGGER.error( "服务器启动失败",e);
//        }

        // 工厂模式启动方法
//        try {
//            Channel channel = ServerChannelFactory.createAcceptorChannel();
//            channel.closeFuture().sync();
//        } catch (Exception e) {
//            LOGGER.error( "服务器启动失败",e);
//        }
        SpringApplication.run(EternityServerMain.class, args);
        System.out.println("(♥◠‿◠)ﾉﾞ  springboot启动成功   ლ(´ڡ`ლ)ﾞ  \n");
        // 启动类启动
        try {

             // TODO 暂时先不启动websocket
//            new Thread(new Runnable() {
//                @Override
//                public void run() {
//                    // 再启动一个websocket的服务
//                    ServerConfig.getInstance().setPort(12171);
//                    ServerConfig.getInstance().setProtocolType(ConstantValue.PROTOCOL_TYPE_WEBSOCKET);
//                    IServer server = new BasicServer();
//                    LOGGER.info("WEBSOCKET服务启动成功  端口号" + ServerConfig.getInstance().getPort());
//                    try {
//                        server.start();
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                }
//            }).start();
//            Thread.sleep(1000);

            ServerConfig.getInstance().setPort(8088);
            ServerConfig.getInstance().setProtocolType(ConstantValue.PROTOCOL_TYPE_TCP);
            IServer server = new BasicServer();
            server.start();

//            ServerConfig.getInstance().setPort(12171);
//            ServerConfig.getInstance().setProtocolType(ConstantValue.PROTOCOL_TYPE_WEBSOCKET);
//            IServer server = new BasicServer();
//            System.out.println("WEBSOCKET服务启动成功  端口号" + ServerConfig.getInstance().getPort());
//            try {
//                server.start();
//            } catch (Exception e) {
//                e.printStackTrace();
//            }

        } catch (Exception e) {
            LOGGER.error( "服务器启动失败",e);
        }

    }
}
